// 页面逻辑定义
Page({
  // 页面初始数据定义
  data: {
    history: [],       // 存储历史记录数组，每条记录包含比赛信息和滑动控制参数
    startX: 0          // 记录触摸起始位置的X坐标，用于计算滑动距离
  },

  // 页面显示时的生命周期函数
  onShow() {
    this.loadHistory(); // 每次页面显示时加载历史记录
  },

  // 加载本地历史记录
  loadHistory() {
    // 从本地缓存获取比赛历史，若无数据则默认为空数组
    const history = wx.getStorageSync('matchHistory') || [];
    // 更新数据，为每条记录添加滑动需要的参数
    this.setData({ 
      history: history.map(item => ({
        ...item,         // 展开原有记录属性
        offsetX: 0,      // 横向偏移量，用于控制滑动效果
        animationData: {} // 动画效果数据存储
      }))
    });
  },

  // 触摸开始事件处理
  touchStart(e) {
    // 记录手指触摸时的初始X坐标
    this.setData({
      startX: e.touches[0].clientX
    });
  },

  // 触摸移动事件处理
  touchMove(e) {
    const index = e.currentTarget.dataset.index; // 获取当前滑动项的索引
    const moveX = e.touches[0].clientX;         // 获取当前触摸点X坐标
    const offsetX = this.data.startX - moveX;    // 计算横向滑动距离（起点-当前点）
    
    // 仅处理向右滑动（offsetX为正数时）
    if (offsetX > 0) {
      // 设置当前项的偏移量，限制最大滑动距离为80像素，负值表示向左位移
      this.setData({
        [`history[${index}].offsetX`]: -Math.min(offsetX, 80)
      });
    }
  },

  // 触摸结束事件处理
  touchEnd(e) {
    const index = e.currentTarget.dataset.index; // 获取当前项索引
    const offsetX = this.data.history[index].offsetX; // 当前滑动偏移量
    
    // 如果滑动距离超过40像素（负值表示向左滑动）
    if (offsetX < -40) {
      // 创建删除动画：宽度渐变为0，透明度渐变为0，持续300ms
      const animation = wx.createAnimation({
        duration: 300,
        timingFunction: 'ease'
      });
      animation.width(0).opacity(0).step(); // 动画参数设置
      
      // 应用动画效果
      this.setData({
        [`history[${index}].animationData`]: animation.export()
      });
    } else {
      // 未达到删除阈值则复位滑动位置
      this.setData({
        [`history[${index}].offsetX`]: 0
      });
    }
  },

  // 删除单条记录
  deleteRecord(e) {
    const index = e.currentTarget.dataset.index; // 获取要删除的索引
    let history = this.data.history;
    
    history.splice(index, 1);           // 从数组移除对应记录
    wx.setStorageSync('matchHistory', history); // 更新本地缓存
    
    this.setData({ history });          // 更新页面数据
    wx.showToast({ title: '删除成功', icon: 'success' }); // 操作反馈
  },

  // 清空所有记录
  clearAll() {
    // 显示确认对话框
    wx.showModal({
      title: '确认清空',
      content: '将永久删除所有记录',
      success: (res) => {
        if (res.confirm) {  // 用户确认后执行
          wx.removeStorageSync('matchHistory'); // 清除缓存
          this.setData({ history: [] });       // 清空页面数据
          wx.showToast({ title: '已清空', icon: 'success' });
        }
      }
    });
  }
});